home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #086 (1990-07)(Amiga User Group Deutschland e.V.).zip
/
Franz PD Disk #086 (1990-07)(Amiga User Group Deutschland e.V.).adf
/
Basic_Hilfsprogramme
/
Amiga-Basic
/
filelister1
< prev
next >
Wrap
Text File
|
1989-07-02
|
4KB
|
144 lines
' *****************************************
' * Filelister entspricht dem FILE-Befehl *
' * Die Dateien können im Programm weiter-*
' * verwendet werden. Z. Bsp. fr einen *
' * Disksorterprogramm. *
' * (c) 10.6.1990 by Henry König *
' * Bornheide 71, 2000 Hamburg 53 *
' *****************************************
'
DIM ordner$(100),datei$(300)
DECLARE FUNCTION Examine& LIBRARY
DECLARE FUNCTION ExNext& LIBRARY
DECLARE FUNCTION Lock& LIBRARY
DECLARE FUNCTION AllocMem& LIBRARY
LIBRARY "exec.library"
LIBRARY "dos.library"
CLS
start:
INPUT " Ausgabe für welches Laufwerk oder Directory: ";d$
d$=d$+CHR$(0)
dzaehler=-1 ' Zähler fr Disknamen und Directories
filezaehler=0 ' Zähler löschen
'
hallo&=-2 ' -2 = lesen, -1 = schreiben
bytes&=252
lock2&=Lock&(SADD(d$),hallo&) ' Zeiger auf aktuelles Laufwerk
opt&=2^1+2^16
info&=AllocMem&(bytes&,opt&)
suc&=Examine&(lock2&,info&)
WHILE suc&<>0
GOSUB einlesen ' Directories und Dateien einlesen
WEND
GOSUB anzeigen ' alle Einträge anzeigen
GOTO start
'
einlesen:
ordner&=info&+8
prot&=PEEKL(info&+116) ' Schutzbits
type&=PEEKL(info&+120) ' Dateityp
size&=PEEKL(info&+124) ' Dateigröße in Bytes
blks&=PEEKL(info&+128) ' Anzahl der belegten Blöcke
ordner$=""
FOR search%=0 TO 29 ' Directory- oder Filenamen feststellen
check=PEEK(ordner&+search%)
IF check<>0 THEN ' ASCII-Zeichen?
ordner$=ordner$+CHR$(check)' ja, dann Zeichen uebernehmen
ELSE ' nein, dann
search%=29 ' Schleife abrechen
END IF
NEXT search%
IF type&<0 THEN ' Datei
type$="File"
filezaehler=filezaehler+1
datei$(filezaehler)=LEFT$(ordner$+SPACE$(31),31)
datei$(filezaehler)=datei$(filezaehler)+RIGHT$(SPACE$(6)+STR$(size&),6)
GOSUB schutzbits ' Schutzbits feststellen
datei$(filezaehler)=datei$(filezaehler)+" "+prot$
GOSUB comment ' auf Kommentar pruefen
datei$(filezaehler)=datei$(filezaehler)+" "+comm$
ELSE ' Directory
type$="Dir"
dzaehler=dzaehler+1
ordner$(dzaehler)=LEFT$(ordner$+SPACE$(31),31)
END IF
suc&=ExNext&(lock2&,info&)
IF suc&<>0 THEN
PRINT ordner$;" = ";type$;"."
END IF
RETURN
anzeigen: ' Alle Directories anzeigen
PRINT STRING$(77,"-")
PRINT "Inhalt des Laufwerks: ";ordner$(0)
PRINT STRING$(77,"-")
PRINT TAB(25);"D i r e c t o r i e s"
PRINT STRING$(77,"-")
FOR i=1 TO dzaehler
PRINT ordner$(i)
NEXT i
PRINT STRING$(77,"-")
PRINT TAB(30);"D a t e i e n"
PRINT STRING$(77,"-")
FOR i=1 TO filezaehler ' Alle Dateien anzeigen
PRINT datei$(i)
NEXT i
RETURN
comment: ' Dateikommentare feststellen
FOR search%=0 TO 79
check=PEEK(info&+144+search%) ' Kommentar feststellen
IF check<>0 THEN
check$=check$+CHR$(check)
ELSE
search%=79
END IF
NEXT search%
comm$=check$ ' Kommentareintrag bernehmen
check$=""
RETURN
schutzbits:
prot$=""
IF prot&<>0 THEN ' Schreibschutzbits auswerten
IF (prot& AND 2^4)<>0 THEN
prot$=prot$+"-"
ELSE
prot$=prot$+"H"
END IF
IF (prot& AND 2^4)<>0 THEN
prot$=prot$+"-"
ELSE
prot$=prot$+"S"
END IF
IF (prot& AND 2^4)<>0 THEN
prot$=prot$+"-"
ELSE
prot$=prot$+"P"
END IF
IF (prot& AND 2^4)<>0 THEN
prot$=prot$+"-"
ELSE
prot$=prot$+"A"
END IF
IF (prot& AND 2^3)<>0 THEN
prot$=prot$+"-"
ELSE
prot$=prot$+"R"
END IF
IF (prot& AND 2^2)<>0 THEN
prot$=prot$+"-"
ELSE
prot$=prot$+"W"
END IF
IF (prot& AND 2^1)<>0 THEN
prot$=prot$+"-"
ELSE
prot$=prot$+"E"
END IF
IF (prot& AND 2^0)<>0 THEN
prot$=prot$+"-"
ELSE
prot$=prot$+"D"
END IF
END IF
RETURN